package com.ruoyi.epidemic.service;

import com.ruoyi.epidemic.domain.DeptUserCntDTO;
import com.ruoyi.epidemic.domain.EpidemicUserDeptBash;

import java.util.List;

/**
 * 疫情防控用户-部门信息（填报）Service接口
 *
 * @author ruoyi
 * @date 2022-04-08
 */
public interface IEpidemicUserDeptBashService
{
    /**
     * 查询疫情防控用户-部门信息（填报）
     *
     * @param id 疫情防控用户-部门信息（填报）主键
     * @return 疫情防控用户-部门信息（填报）
     */
    public EpidemicUserDeptBash selectEpidemicUserDeptBashById(Long id);

    /**
     * 查询疫情防控用户-部门信息（填报）列表
     *
     * @param epidemicUserDeptBash 疫情防控用户-部门信息（填报）
     * @return 疫情防控用户-部门信息（填报）集合
     */
    public List<EpidemicUserDeptBash> selectEpidemicUserDeptBashList(EpidemicUserDeptBash epidemicUserDeptBash);

    /**
     * 新增疫情防控用户-部门信息（填报）
     *
     * @param epidemicUserDeptBash 疫情防控用户-部门信息（填报）
     * @return 结果
     */
    public int insertEpidemicUserDeptBash(EpidemicUserDeptBash epidemicUserDeptBash);

    /**
     * 修改疫情防控用户-部门信息（填报）
     *
     * @param epidemicUserDeptBash 疫情防控用户-部门信息（填报）
     * @return 结果
     */
    public int updateEpidemicUserDeptBash(EpidemicUserDeptBash epidemicUserDeptBash);

    /**
     * 批量删除疫情防控用户-部门信息（填报）
     *
     * @param ids 需要删除的疫情防控用户-部门信息（填报）主键集合
     * @return 结果
     */
    public int deleteEpidemicUserDeptBashByIds(String ids);

    /**
     * 删除疫情防控用户-部门信息（填报）信息
     *
     * @param id 疫情防控用户-部门信息（填报）主键
     * @return 结果
     */
    public int deleteEpidemicUserDeptBashById(Long id);

    /**
     * 根据userId查询当前用户EpidemicUserDeptBash
     * @param curUserId
     * @return
     */
    EpidemicUserDeptBash selectEpidemicUserDeptBashByUserId(String curUserId);

    /**
     * 疫情防控用户-部门信息全部人数
     * @return 结果
     */
    public int selectCountUser(Long deptId, String flag);

    /**
     * 根据用户id获取用户类型
     * @param curUserId
     * @return
     */
    String getUserTypeByUserId(String curUserId);

    /**
     * 查询人员总数
     * @param childDeptIdList
     * @return
     */
    int selectCountUserNew(List<Long> childDeptIdList);

    /**
     * 查询人员总数,按部门id分组
     * @param childDeptIdList
     * @return
     */
    List<DeptUserCntDTO> selectCountUserNewGroupDeptId(List<Long> childDeptIdList);

    /**
     *
     * @param deptId
     * @param flag
     * @return
     */
    List<String> selectCountUserIds(Long deptId, String flag);
}
